package com.java.zhuiyun.api.file_manager.service.impl;

import com.java.zhuiyun.api.file_manager.entity.FileManager;
import com.java.zhuiyun.api.file_manager.mapper.FileManagerMapper;
import com.java.zhuiyun.api.file_manager.service.FileManagerService;
import com.java.zhuiyun.common.response.CommonResult;
import com.java.zhuiyun.util.OssTemplate;
import com.java.zhuiyun.util.pageUtil.MybatisPageHelper;
import com.java.zhuiyun.util.pageUtil.PageRequest;
import com.java.zhuiyun.util.pageUtil.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;

/**
 * @ClassName FileManagerServiceImpl
 * @Description TODO
 * @Author MJL
 * @Date 2023/8/15 20:22
 **/
@Service
public class FileManagerServiceImpl implements FileManagerService {
    @Autowired(required = false)
    private FileManagerMapper fileManagerMapper;
    @Resource
    private OssTemplate ossTemplate;

    /**
     * @Author MJL
     * @Description todo 分页查询全部文件
     * @Date 2023/8/15 20:52
     * @Return  * @param null
     */
    @Transactional
    @Override
    public PageResult queryFile(String fileManagerName, PageRequest pageRequest, Integer id) {
        MybatisPageHelper.startPage(pageRequest);
        PageResult pageResult = MybatisPageHelper.getPageResult(fileManagerMapper.queryFile(fileManagerName,pageRequest,id));
        return pageResult;
    }

    /**
    * @Author MJL
    * @Description todo 上传文件到oss
    * @Date 2023/8/16 9:02
    * @Return  * @param null
    */
    @Override
    public int uploadImage(MultipartFile multipartFile) throws IOException {
        if (multipartFile == null) {
            CommonResult.ok("文件为空");
        }
        String originalFilename = multipartFile.getOriginalFilename();
        // 把文件上传到oss
        String upload = ossTemplate.upload(multipartFile.getOriginalFilename(), multipartFile.getInputStream());
        // 获取文件名称
        String name = multipartFile.getName();
        // 截取文件后缀名
        String substring = name.substring(name.lastIndexOf("."));
        // 获取文件大小
        long size = multipartFile.getSize();
        // 创建实体类对象
        FileManager fileManager = new FileManager();
        // 添加文件后缀
        fileManager.setFileType(substring);
        // 添加创建时间
        fileManager.setCreateTime(new Date());
        // 添加更新时间
        fileManager.setUpdateTime(new Date());
        // 获取文件名称
        fileManager.setFileManagerName(originalFilename);
        // 获取文件路径
        fileManager.setFilePath(upload);
        // 获取文件大小
        fileManager.setSize(size);
        // 添加时删除标识符自动为0
        fileManager.setDelFlag(0);
        // 添加时视频审核状态自动为0（未审核）
        fileManager.setAuditType(1);
        // 添加到数据库
        int i = fileManagerMapper.saveFileManager(fileManager);
        // 添加成功后获取ID
        Integer fileManagerId = fileManager.getFileManagerId();
        return fileManagerId;
    }

    @Override
    public FileManager downLoadFile(Integer fileManagerId) {
        return fileManagerMapper.downLoadFile(fileManagerId);
    }

    /**
    * @Author MJL
    * @Description todo 根据登录信息查看文件
    * @Date 2023/8/30 8:41
    * @Return  * @param null
    */
    @Override
    public CommonResult getFileById(Integer uploadedBy) {
        FileManager fileManager = fileManagerMapper.getFileById(uploadedBy);
        return CommonResult.ok(fileManager);
    }

    /**
    * @Author MJL
    * @Description todo 教师删除视频
    * @Date 2023/9/1 14:05
    * @Return  * @param null
    */
    @Override
    public int deleteFileManage(Integer fileManagerId) {
        return fileManagerMapper.deleteFileManage(fileManagerId);
    }
}
